/*
 *
Integer(void)
0
Integer(int)
1
Integer(const char *)
3

 *
 */

#include <iostream>
#include <cstring>
using namespace std;
class Integer{
	private:
		int m_i ;
	public:
		Integer(void){
			cout << "Integer(void)" << endl;
			m_i = 0;
		}
		explicit Integer(int n){ //类型转换构造函数
			cout << "Integer(int)" <<endl;
			m_i = n;
		}
		explicit Integer(const char *str){
			cout << "Integer(const char *)" << endl;
			m_i = strlen(str);
		}
		void print(void){
			cout << m_i << endl;
		}
};
int main(void){
	
	Integer a;
	a.print();
	
	//Integer b = 1; //编译器会找参数为int类型的构造函数
	Integer b = Integer(1); //编译器会找参数为int类型的构造函数
	b.print();
	
	//Integer c = "abc"; //编译器会找参数为const char *类型的构造函数
	Integer c = Integer("abc"); //编译器会找参数为const char *类型的构造函数
	c.print();
	return 0;
}
